<?php
// ***********************************************************************
// Назначение: Передача товаров из 1С в virtuemart
// Модуль: system/category.php - Класс создания категорий
// Автор оригинала: Дуденков М.В. (email: mihail@termservis.ru)
// Помогали разрабатывать: Alexandr Datsiuk
// Павел Михнев
// CALEORT
// Авторские права: Использовать, а также распространять данный скрипт
// разрешается только с разрешением автора скрипта
// ***********************************************************************

if (! defined ( 'VM_1CEXPORT' )) {
	echo "<h1>Несанкционированный доступ</h1>Ваш IP уже отправлен администратору.";
	die ();
}

function inserCategory($xml, $parent = 0) {
	global $log, $db, $dba, $id_admin;
	
	$xml = simplexml_load_string ( $xml );
	
	foreach ( $xml as $category ) {
		unset ( $slug_name );
		$slug_name = array ();

		if( isset($category->Ид) AND isset($category->Наименование) AND $category->Ид != '' AND $category->Наименование != '') {
			$id =  strval($category->Ид);
			$name = ( string )$category->Наименование;
			$log->addEntry ( array ('comment' => '--------------------' . $name . '--------------------' ) );
			
			if (VM_VERVM == '2') {
				// описываем какие символы убираем из ссылок
				$slug_str = $name;
				$slug_str = preg_replace ( "~(\.|\\\|\*|\/|\"|\,|\-|\+|\?|\[|\ˆ|\]|\(|\\\$|\))~", "", $slug_str );
				$slug_str = ereg_replace ( " +", " ", $slug_str );
				
				$slug_name = explode ( " ", $slug_str );
				
				if (count ( $slug_name ) > 1) {
					$id_slug = 0;
					unset ( $s_name );
					$s_name = array ();
					
					foreach ( $slug_name as $snm ) {
						$s_name [$id_slug] = translitString ( $snm );
						$id_slug = $id_slug + 1;
					}
					
					$slug = implode ( "_", $s_name );
				} else {
					$slug = translitString ( $name );
				}
				
				if (empty ( $slug ) or $slug == "") {
					$slug = $name;
				}
			}
			
			$log->addEntry ( array ('comment' => 'Этап 4.1.2) Проверяем категорию ' . $name ) );
			
			$sql = "SELECT category_id FROM #__virtuemart_category_to_1c where `c_category_id` = '" . $id . "'";
			$db->setQuery ( $sql );
			$res = $db->loadResult ();
			if (isset ( $res )) {
				$log->addEntry ( array ('comment' => 'Этап 4.1.2) Категория ' . $name . ' существует, обновляем информацию в базе' ) );
				$db->query ();
				$category_id = ( int ) $res;
				
				$sql = 'SELECT category_name FROM #__virtuemart_categories' . LANG . ' where `virtuemart_category_id` = ' . $category_id;
				$db->setQuery ( $sql );
				$category_name = $db->loadResult ();
				
				// if (VM_VERVM == '2') {
					// $sql = 'SELECT slug FROM #__virtuemart_categories' . LANG . ' where `virtuemart_category_id` = ' . $category_id;
					// $db->setQuery ( $sql );
					// $slug_base = $db->loadResult ();
					// $slug_if = $slug . "_cid_" . $category_id;
					// if ($slug_base != $slug_if) {
						// $slug_db = "slug = '" . $slug . "_cid_" . $category_id . "'";
					// } else {
						// $slug_db = "";
					// }
				// }
				if ($category_name != $name) {
					$sql = "UPDATE #__virtuemart_categories" . LANG . " SET
					`category_name` = '" . $name . "',
					`category_description` = '" . $name . "',
					" . $slug_db . " where `virtuemart_category_id`=" . $category_id;
					$db->setQuery ( $sql );
					$db->query ();
					
					$log->addEntry ( array ('comment' => 'Этап 4.1.2) Категория ' . $name . ' обновлена' ) );
				} 
				else {
					$log->addEntry ( array ('comment' => 'Этап 4.1.2) Категория ' . $name . ' не менялась, обновление не требуется' ) );
				}
			
			} 
			else {
				$ins = new stdClass ();
				$ins->virtuemart_category_id = NULL;
				$ins->virtuemart_vendor_id = 1;
				$ins->category_template = 0;
				$ins->category_layout = 0;
				$ins->category_product_layout = 0;
				$ins->products_per_row = VM_LIST_CAT;
				$ins->limit_list_start = NULL;
				$ins->limit_list_step = NULL;
				$ins->limit_list_max = NULL;
				$ins->limit_list_initial = NULL;
				$ins->hits = 0;
				$ins->metarobot = '';
				$ins->metaauthor = '';
				$ins->ordering = 0;
				$ins->shared = 0;
				$ins->published = 1;
				$ins->created_on = date ( 'Y-m-d H:i:s' );
				$ins->created_by = $id_admin;
				$ins->modified_on = date ( 'Y-m-d H:i:s' );
				$ins->modified_by = $id_admin;
				
				if (! $db->insertObject ( '#__virtuemart_categories', $ins, 'virtuemart_category_id' )) {
					$log->addEntry ( array ('comment' => 'Этап 4.1.2) Неудача: Невозможно создать категорию - ' . $name ) );
					print 'error mysql';
					die ();
				} else {
					$log->addEntry ( array ('comment' => 'Этап 4.1.2) Создаем категорию  ' . $name ) );
				}
				$category_id = ( int ) $ins->virtuemart_category_id;
				//$slug = $slug . "_cid_" . $category_id;
				
				$ins = new stdClass();
				$ins->virtuemart_category_id = $category_id;
				$ins->category_name = $name;
				$ins->slug = $slug;
				$ins->category_description = $name;
				$ins->metadesc = '';
				$ins->metakey = '';
				if (! $db->insertObject ( '#__virtuemart_categories' . LANG, $ins )) {
					$log->addEntry ( array ('comment' => 'Этап 4.1.2) Неудача: Таблица ' . $dba ['category_ln_db'] . ' Невозможно вставить запись для категории - ' . $name ) );
					print 'error mysql';
					die ();
				}
	
				$ins = new stdClass();
				$ins->category_parent_id = ( int ) $parent;
				$ins->category_child_id = ( int ) $category_id;
				$ins->ordering = null;
				
				if (! $db->insertObject ( '#__virtuemart_category_categories', $ins )) {
					$log->addEntry ( array ('comment' => 'Этап 4.1.2) Неудача: Невозможно создать дерево категорий' ) );
					print 'error mysql';
					die ();
				}
				
				$ins = new stdClass();
				$ins->category_id = (int)$category_id;
				$ins->c_category_id = $db->getEscaped ( $id );
				
				if (! $db->insertObject ( '#__virtuemart_category_to_1c', $ins )) {
					$log->addEntry ( array ('comment' => 'Этап 4.1.2) Неудача: Невозможно применить категории 1С и VMSHOP' ) );
					print 'error mysql';
					die ();
				}
			
			}
			
			$CAT [$id] = $category_id;
			
			$log->addEntry ( array ('comment' => ' 4.1.2) Категория и все ее подкатегории созданы' ) );
		}
			
		if( $category->Группы ) inserCategory($category->Группы->asXML(), $category_id);
	
	}
	
	unset ( $xml );
}
?>